/**
 * 需求：提供一个名为add的接口，以post的方式请求接口，
 * 将英雄数据保存到data.json文件中
 * 1、创建服务器
 * 2、实现功能
 * 
 */ 
const http = require('http')
const fs = require('fs')

let app = http.createServer((req,res)=>{
    // 1、判断接口名称 和 请求方式
    let url = req.url
    let method = req.method
    // 设置返回内容的编码格式 content-type
    res.setHeader("content-type","text/html;charset=utf8")
    if(url==="/add" && method === "POST"){
        // 2、接收数据
        let result = "";
        req.on("data",(chunk)=>{
            // chunk 接收到的post请求的数据，但这个数据不一定是完整的
            /***
             * 为什么不一定是完整的呢？答：因为数据有可能一次传很多过了，所以这个数据就会分片接收
             * 因此数据是不是完成的分情况：
             * 情况一：前端传入的数据很小的时候，就一次性接收完成
             * 情况二：前端传入的数据很大的时候，就会自动将数据切割为几个片段，一部分一部分接收，也就是分多次接收
             * */ 
             result+=chunk
        })
        // 数据接收结束后 把数据保存到data.json中
        // 只要end事件的回调函数触发了，就说明数据接收完成了
        req.on("end", ()=>{
            // 将res数据写入到data.json文件中接口
            // console.log(32,result);
            // 读取data.json文件中的数据
            let str = fs.readFileSync("./db/data.json","utf-8")
            let arr = JSON.parse(str)
            // 解析数据
            let query = new URLSearchParams(result)
            // 将数据添加到数组中
            arr.push({
                name: query.get("name"),
                skinname: query.get("skinname")
            })
            // console.log(arr);
            // 把最新的数据写入data.json中即可
            // res.setHeader("content-type","application/json;charset=utf8")
            fs.writeFileSync("./db/data.json", JSON.stringify(arr))
        })
        res.end(`ok`)
    }else{
        res.statusCode = 404
        res.end("找不到你请求的接口")
    }
})

app.listen(3000,()=>{
    console.log("服务器启动成功：http://192.168.95.103:3000");
})
